package org.domain.sisteste.session.dao;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.domain.sisteste.entity.dto.PendenciaDTO;
import org.hibernate.Query;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;

@Name(value = "pendenciasDAO")
@AutoCreate
public class PendenciasDAO extends GenericDAO<PendenciaDTO> implements
		DAO<PendenciaDTO> {

	public PendenciasDAO() {
		super(PendenciaDTO.class);
	}

	@SuppressWarnings("unchecked")
	public List<PendenciaDTO> obterRelatorioPendencias() {
		List<PendenciaDTO> pendenciaDTOs = new ArrayList<PendenciaDTO>();
		StringBuilder stringBuilder = new StringBuilder();
		stringBuilder.append("SELECT SOFTWARE.NO_Comercial, ETAPA.NO_Etapa, SOFTWARE.NR_Versao, TESTE.DT_InicioPrevista, TESTE.DT_FimPrevista ");
		stringBuilder.append("FROM TA_TESTE TESTE, TB_SOFTWARE SOFTWARE, TB_ETAPA ETAPA ");
		stringBuilder.append("WHERE TESTE.CD_Software = ");
		stringBuilder.append("SOFTWARE.ID_SOFTWARE AND ETAPA.ID_ETAPA = ");
		stringBuilder.append("TESTE.CD_ETAPA");
		String sql = stringBuilder.toString();
		Query query = getSession().createSQLQuery(sql);
		List<Object[]> list = query.list();
		for (Object[] objects : list) {
			PendenciaDTO pendenciaDTO = new PendenciaDTO();
			pendenciaDTO.setNomeSoftware((String) objects[0]);
			pendenciaDTO.setNomeEtapa((String) objects[1]);
			pendenciaDTO.setNumeroVersao((BigDecimal) objects[2]);
			pendenciaDTO.setDataInicialPrevista((Date) objects[3]);
			pendenciaDTO.setDataFinalPrevista((Date) objects[4]);
			pendenciaDTOs.add(pendenciaDTO);
		}
		return pendenciaDTOs;
	}
}
